import '../../data/models/user_model.dart';

/// 认证仓储接口
abstract class AuthRepository {
  /// 用户登录
  Future<LoginResponse> login(LoginRequest request);

  /// 刷新Token
  Future<LoginResponse> refreshToken();

  /// 用户登出
  Future<void> logout({bool clearLocalData = false});

  /// 验证Token是否有效
  Future<bool> validateToken();

  /// 获取当前用户信息
  Future<UserInfo> getCurrentUser({bool forceUpdate = false});

  /// 检查是否已登录
  Future<bool> isLoggedIn();

  /// 获取本地存储的Token
  Future<String?> getStoredToken();

  /// 获取本地存储的用户信息
  Future<UserInfo?> getStoredUserInfo();

  /// 保存用户信息到本地存储
  Future<void> saveUserInfo(UserInfo userInfo);

  /// 清除认证数据
  Future<void> clearAuthData();
}
